import GCJ_CLASS_TYPE=require('./../../common/GCJ_CLASS_TYPE');
import ObjBase=require('./ObjBase');
import DEFINE=require('./../../common/DEFINE');
import PageInfo=require('./../../common/PageInfo');
import ObjPosition=require('./../base/ObjPosition');
import GroupObj=require('./GroupObj');
import TableCellObj=require('./TableCellObj');
import FColor=require('./../color/FColor');
var CommonUtil=require('../../../../common/util/CommonUtil');
var fs=require('fs');
var path=require('path');
var CONFIG=require('../../../../common/config');

export  = TableRowObj;
    

/**
 *
 * @author 
 *
 */
class TableRowObj extends GroupObj {
    // **************************************************
    // GroupObj.children 记录行单元格数组 Array<TableCell>
    // **************************************************
    
    public static ROW_TYPE_NORMAL: number=0;// 普通行
    public static ROW_TYPE_TITLE: number=1;// 标题行
    
    public rowType: number=TableRowObj.ROW_TYPE_NORMAL;// 行类型
    public rowNum: number=0;// 行号（0开始）


    public constructor(g?) {
        super(g);  //引入全局数据
        this.ct = GCJ_CLASS_TYPE.CLASS_TYPE_TableRowObj;
    }
    
    // 生成微调数据会用到
    public toJsonOfMinTextExt(): string {
        // 去掉父json字符串的头尾
        var superJson=super.toJsonOfMinTextExt();
        superJson=superJson.substr(1,superJson.length-2);

        var ret="{";
        ret+=superJson;

        ret+=',';
        ret+=('\"rowType\":'+this.rowType);

        ret+=',';
        ret+='\"rowNum\":'+this.rowNum;

        ret+="}";
        return ret;
    }
    
    // 转成json字符串
    public toJson(): string {
        var superJson=super.toJson();
        superJson=superJson.substr(1,superJson.length-2);

        var ret='{';
        ret+=superJson;
        
        ret+=',';
        ret+='"rowType":'+this.rowType;
        
        ret+=',';
        ret+='"rowNum":'+this.rowNum;

        ret+='}';
        return ret;
    }

    // 从json对象(注意不是json字符串)中解析
    // 参数：self,true表示只拷贝自身数据，而不拷贝子的数据
    public fromJson(jsonObj,versionId,self?) {
        super.fromJson(jsonObj,versionId,self);
        
        if(jsonObj.hasOwnProperty("rowType")) {
            this.rowType=jsonObj.rowType;
        }

        if(jsonObj.hasOwnProperty("rowNum")) {
            this.rowNum=jsonObj.rowNum;
        }
    }
	
    // 获取对象名称
    public getObjetName(): string {
        return "表格行";
    }

    // 当作普通对象处理 (整体)
    public isSimple(): boolean {
        return false;
    }
    
    /**
     * 设置本行单元格背景色
     * 参数color: 为null时清除背景色
     */ 
    public setCellBgColor(color:FColor=null) {
        for(var i=0;i<this.children.length;i++) {
            this.children[i].bgcolor=color;
        }
    }
    
    /**
     * 添加行单元格
     * num: 添加个数
     */
    public addCell(num: number) {
        if(num>0) {
            // 备份最后一列,用于复制
            var jsonStr=(<TableCellObj>this.children[this.children.length-1]).toJson().replace(/\n/g,'\\n');

            for(var j=0;j<num;j++) {
                // 复制
                var copyCell: TableCellObj=new TableCellObj(this.getGlobalData());
                copyCell.fromJson(JSON.parse(jsonStr),0,false);// 需拷贝子
                copyCell.colNum+=(j+1);// 修改列号
                var idMaps=[];
                copyCell.deepResetId(idMaps);
                copyCell.pos.x+=(copyCell.pos.w*(j+1));// 修改新列位置
                // 添加到每行
                this.addChild(copyCell,this.children.length);
                        
                // 修改row宽度
                this.pos.w+=copyCell.pos.w;
            }
        }
    }
    /**
     * 删除行单元格
     * num: 删除个数(最多删至1个)
     */
    public delCell(num: number) {
        if(num>0) {
            // 最多删至1列
            var newColCnt=(num>=this.children.length)? 1:(this.children.length-num);

            for(var j=newColCnt;j<this.children.length;j++) {// 循环单元格
                var cell: TableCellObj=<TableCellObj>this.children[j];
                cell.parent=null; // 删除子对父的引用
                    
                // 修改row宽度
                this.pos.w-=cell.pos.w;
            }
            this.children.splice(newColCnt,this.children.length-newColCnt);// 减去尾部多余列
        }
    }

}
//SJG_MARK_END-------------------------
